#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

//class Stack
//{
//public:
//
//private:
//	int* _arr;
//};
//
//int main()
//{
//	Stack* pst = (Stack*)operator new(sizeof(Stack));
//	operator delete(pst);
//	
//	Stack* ptr = new Stack();
//	return 0;
//}

//class A
//{
//public:
//	A(int a = 10)
//		:_a1(a)
//	{}
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//private:
//	int _a1;
//};
//int main()
//{
//	char pchar[] = "abcd";
//	cout << strlen(pchar) << endl;
//}

//template<class T>
//void Swap(T& left, T& right)
//{
//	T tmp = left;
//	left = right;
//	right = tmp;
//}
//
//int main()
//{
//	int x = 1, y = 2;
//	Swap(x, y);
//	double i = 1.1, j = 2.2;
//	Swap(i, j);
//	return 0;
//}


template<class T>
T Add(const T& left, const T& right)
{
	return left + right;
}

int main()
{
	cout << Add(1, 2) << endl;

	//cout << Add(1.1, 2) << endl;

	cout << Add((int)1.1, 2) << endl;

	cout << Add<int>(1.1, 2) << endl;
}